package com.twq.oo.classes

/**
 * Created by tangweiqun on 2017/11/27.
 *
 */
object BasicTypeTest {
  def main(args: Array[String]): Unit = {
    //1、基本类型
    val int = 1
    val short: Short = 2
    val byte: Byte = 3
    val long = 3L
    val double = 3.23
    val float = 3.23F
    val boolean = false
    val char = 'c'

    //2、String类型
    val string = "this is a string" //sequence of char
    println(s"Hello, $string")
    println(s"The answer is ${6 * 7}") //s 字符串拼接

    println(raw"No\\\\escape!") // No\\\\escape! raw 原始的，不转义
    println(s"Has\\\\escape!") // Has\\escape!

    println(f"${math.Pi}%.5f") //3.14159

    val pi = "Pi"
    println(f"$pi is approximately ${math.Pi}%.8f.")

    //3、scala中的操作符(operator)和方法(method)
    //scala中的基本类型提供了很多的操作符(比如1 + 2中的+)，这些操作符实际上是方法
    1 + 2
    1.+(2)
    1.+(2L) //方法 + 的重载

    //4、方法的调用与操作符
    val s = "Hello, world!"
    s.indexOf('o') //这里的indexOf是方法
    s indexOf 'o' //这里的indexOf是操作符
    s indexOf('o', 5)

    //基本类型的部分操作符就是方法，在scala中，所有的方法都可以是操作符
    //是方法还是操作符取决于你怎么用
    //如果s.indexOf('o')这样用，那么indexOf是方法
    //如果s indexOf 'o'这样用，那么indexOf是操作符

    s.substring(1)
    s substring(1, 2)

    //prefix操作符
    -2.0
    (2.0).unary_- //等于-2.0
    //postfix操作符
    s toLowerCase


    //4、基本类型的其他的操作符
    //4.1 数学运算 + - * / %
    //4.2 关系运算 < > <= >= =
    //4.3 逻辑运算 || && !
    //4.4 位运算 & | ^ ~

  }
}
